The present invention relates, in general, to software repair, and more specifically, to a smart software patch delivery system.
Java® (Java is a registered trademark of Oracle and/or its affiliates) has become one of the most widely used software platforms. A Java application is usually shipped as a set of jar files. These .jar files in-turn contain compiled class files in an intermediate bytecode format. A typical enterprise application can be as complex as having 100's of jar files, and each jar file can have more than 1000 class files.
If software needs to be updated (repairs, new features, etc.), the updates for an enterprise application are sent as individual fixes to start with, and eventually rolled up into a bundle as a Service Release or Fix Pack. Service Releases or Fix Packs are unscheduled releases comprising relatively few fixes, to address significant issues discovered between regularly scheduled Maintenance Releases. Customers can either download specific fixes which they are interested in, or they can download a Fix Pack. The framework to download these updates should be user friendly and easy to maintain.
Frameworks store prepackaged bundles of Fix Packs and individual fixes, known as Authorized Program Analysis Report (APAR's) on a server. A readme file containing details of the fixes, for example, problem description or dependency, will also be part of the download. Though this framework looks good, it is not user friendly when it comes to handling patch dependencies. Dependency handling is done on the customer system and not at the time of download. The patch installer will check what is installed on the system and what else is missing before installing a patch. Thus, a customer downloading a patch will not have any information about its dependencies unless he/she reads the readme file or tries to install the patch. The situation can get worse with recursive dependencies. After downloading the dependent fixes separately, one also needs to remember the order of installation.